package com.supplychain.scm.core.dinger.annotation;

import com.supplychain.scm.core.dinger.config.IDingerProperties;

import java.lang.annotation.*;

/**
 * @author liyang
 * @version 1.0.0
 * @ClassName DingerTalk
 * @Description 钉钉消息AOP
 * @createTime 19:13:00 2022/11/18
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface DingerTalk {
	/**
	 * 消息标题
	 * @return
	 */
	String title() default "";

	/**
	 * 消息描述
	 * @return
	 */
	String describe() default "";

	/**
	 * 包含异常
	 * @return
	 */
	Class<? extends Throwable>[] containFor() default {};

	/**
	 * 排除异常
	 * @return
	 */
	Class<? extends Throwable>[] noContainFor() default {};

	/**
	 * 排除的消息
	 * @return
	 */
	String[] noMessageFor() default {};

	/**
	 * 排除的消息编码
	 * @return
	 */
	String[] noMessageCodeFor() default {};

	/**
	 * 异常编码 字段名
	 * @return
	 */
	String messageCodeFieldName() default "code";
	/**
	 * 是否需要堆栈信息
	 * @return
	 */
	boolean isStackTrace() default false;

	/**
	 * 机器人配置
	 * @return
	 */
	Class<? extends IDingerProperties>[] properties() default {};

	/**
	 * 默认群是否发送
	 * @return
	 */
	boolean defaultRoot() default true;
}
